// Copyright [2020] <unknown>
#include <bits/stdc++.h>
using namespace std;
// #define ONLINE_JUDGE
#ifndef ONLINE_JUDGE
#define dbg(x...) { cerr << "\033[32;1m" << #x << " -> "; err(x); }
void err() { cerr << "\033[39;0m" << endl; }
template<typename T, typename... A>
void err(T a, A... x) { cerr << a << ' '; err(x...); }
#else
#define dbg(...)
#endif

#define sz(x) ((int)x.size())

typedef long long LL;

int t, n;

int k;

int cnt[100];
int cur;
void trans(int cnt[], LL x) {
    int now = 0;
    while (x) {
        cnt[now++] += x % k;
        x /= k;
    }
    cur = max(cur, now);
}

int main(int argc, char const *argv[]) {
    // code
    scanf("%d", &t);
    for (int kk=0; kk<t; ++kk) {
        scanf("%d%d", &n, &k);
        cur = -1;
        memset(cnt, 0, sizeof cnt);
        for (int i=0; i<n; ++i) {
            LL x;
            scanf("%lld", &x);
            trans(cnt, x);
        }
        // for (int i=0; i<cur; ++i) {
        //     cnt[i+1] += cnt[i] / k;
        //     cnt[i] %= k;
        // }
        // while (cnt[cur]) {
        //     cnt[cur+1] += cnt[cur] / k;
        //     cnt[cur] %= k;
        //     ++cur;
        // }
        bool flag = true;
        for (int i=0; i<cur; ++i) {
            // dbg(i, cnt[i])
            if (cnt[i] > 1) {
                flag = false;
                break;
            }
        }
        if (flag)
            puts("YES");
        else
            puts("NO");
    }

    return 0;
}
